package com.hp.bon.sgw.ctrl;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

/**
 * SGW 相关进程节点用于远程控制的接口
 * 
 * @author wuzhih
 * 
 */
public interface SGWRemoteInterface {
	@GET
	@Path("system/shutdown")
	@Produces(MediaType.TEXT_PLAIN)
	public String shutDown();

	@GET
	@Path("sysctrl/alive")
	@Produces(MediaType.TEXT_PLAIN)
	public int checkNodeAlive();

	@GET
	@Path("system/petri/{status}")
	@Produces(MediaType.TEXT_PLAIN)
	public String doSysPetriChange(@PathParam("status") int newStatus);

	@GET
	@Path("sgwparam/set/{paramValue:.*}/{node}")
	@Produces(MediaType.APPLICATION_JSON)
	public String doParamValueSet(@PathParam("paramValue") String paramValue,
			@PathParam("node") String node);

	@GET
	@Path("sgwparam/refresh")
	@Produces(MediaType.APPLICATION_JSON)
	public String doParamRefresh();

	@GET
	@Path("sgwparam/list/{param:.*}/{node}")
	@Produces(MediaType.APPLICATION_JSON)
	public String doParamList(@PathParam("param") String param,
			@PathParam("node") String node);

	@GET
	@Path("config/reloadall/{node}")
	@Produces("text/plain;charset=utf-8")
	public String reloadConfig(@PathParam("node") String node);

	@GET
	@Path("sgwstat/runtime/{node}")
	@Produces(MediaType.APPLICATION_JSON)
	public String doSGWRuntime(@PathParam("node") String node);

	@GET
	@Path("sgwstat/getStatToday/{module:.*}/{node}")
	@Produces(MediaType.APPLICATION_JSON)
	public String getStatToday(@PathParam("module") String module,
			@PathParam("node") String node);

	@GET
	@Path("sgwstat/getStatFromStart/{module:.*}/{node}")
	@Produces(MediaType.APPLICATION_JSON)
	public String getStatFromStart(@PathParam("module") String module,
			@PathParam("node") String node);

	@GET
	@Path("sgwstat/getStatHourModule/{module:.*}/{node}")
	@Produces(MediaType.APPLICATION_JSON)
	public String getStatHourModule(@PathParam("module") String module,
			@PathParam("node") String node);

	@GET
	@Path("sgwstat/getStatThruput/{module:.*}/{node}")
	@Produces(MediaType.APPLICATION_JSON)
	public String getStatThruput(@PathParam("module") String module,
			@PathParam("node") String node);

	@GET
	@Path("sgwstat/getStatQueue/{module:.*}/{node}")
	@Produces(MediaType.APPLICATION_JSON)
	public String getStatQueue(@PathParam("module") String module,
			@PathParam("node") String node);

	@GET
	@Path("sgwcheckpoint/doCheckpoint/{node}")
	@Produces(MediaType.APPLICATION_JSON)
	public String doCheckpoint(@PathParam("node") String node);

	@GET
	@Path("sysctrl/congestionchanged/{congestion}")
	@Produces(MediaType.TEXT_PLAIN)
	public String doCongestionChanged(@PathParam("congestion") int congestion);

	@GET
	@Path("system/real/queuesize")
	@Produces(MediaType.TEXT_PLAIN)
	public String getQueueSize();

	@GET
	@Path("system/real/queuemaxsize")
	@Produces(MediaType.TEXT_PLAIN)
	public String getQueueMaxSize();
}
